Conventional desktop and mainframe computer-based printing systems typically operate by processing pages in a document in a sequential manner. Accordingly, each page is individually processed, the individual processing for a particular page having to be completed before processing for a following page commences. As a consequence, the processing for a page does not begin until the previous page has been completely printed. The printing process itself typically consists of a number of sequential processing stages, each of which is made up of a combination of computer software and hardware based sub-processes. In the conventional printing model, each sub-process stage must be fully completed before the next sub-process stage can commence.
Many modern printer engines are capable of printing multiple pages during a single printing cycle. These engines must, however, be fed data continuously, in order to maintain the continuous printing cycle, and thus perform at their maximum rated engine speed and throughpout. If a situation arises where raw data required for printing a particular page is not ready when required, the printer engine must cycle down to a standby mode in an orderly fashion, and cease feeding input media, such as paper, in order to prevent blank media appearing in the middle of the output document. Only when raw data is again available for the subsequent page, can the printer engine again begin processing.
This cycle down/cycle up process reduces engine throughput considerably, and of course, causes the printing system to operate below maximum performance levels. The presence of bottlenecks which are inherent in conventional sequential printing systems makes it difficult to provide a continuous supply of raw print data to the printer engine as required. As printer engine speeds increase, this problem is exacerbated, since the speed with which the raw data must be supplied to the print engine also increases. Furthermore, as achievable print resolution increases, the volume of data processed in the course of each print job also increases, typically increasing in proportion to the square of the resolution increase, since the printed page is two-dimensional. The aforementioned technological advances place increasing strain on the conventional sequential processing model.
One present solution to the aforementioned problems is to “spool” job data at various stages in the print data flow processing. This approach can sometimes eliminate the cycle down/cycle up problem if applied to a relatively short print run. A penalty is incurred, however, since spooling adds additional overhead to the print data processing, because data must be typically copied to, and from, a relatively slow storage device such as a hard disc. Furthermore, spooling introduces an arbitrary restriction on the length of a print job, since data for an entire job must typically be stored in spooling systems. Furthermore, the spooling approach also introduces additional start-up delay, before the first page of a job can be printed.